#!/usr/bin/env node

/**
 * 创建默认.env文件
 * 可以直接部署使用
 */

const fs = require('fs');
const path = require('path');
const crypto = require('crypto');

console.log('🔧 创建默认环境配置文件...\n');

// 生成安全密钥
const JWT_SECRET = '3T+03L6bbpu31J1UFoB2fCgWIeLT1U75hNlR6k7TxOM=';
const REFRESH_TOKEN_SECRET = 'gE1KQpNGCGzoV8jV+7EQwRlwMAxW4ihPxeHT1FBjXws=';
const ENCRYPTION_KEY = '2f3ad3fa49e7271b84f7c6b7db2c615f2b5021afac5a42f9568155a9e001ed07';

// 后端.env内容
const backendEnv = `# ====================================
# 2FA Manager - 后端环境变量配置
# 生成时间: ${new Date().toISOString()}
# ====================================

# 运行环境
NODE_ENV=development

# 服务器配置
PORT=5000
HOST=0.0.0.0

# 数据库配置（SQLite本地文件）
DATABASE_URL=file:./dev.db

# ====================================
# JWT配置（已自动生成安全密钥）
# ====================================
JWT_SECRET=${JWT_SECRET}
REFRESH_TOKEN_SECRET=${REFRESH_TOKEN_SECRET}
JWT_EXPIRES_IN=15m
REFRESH_TOKEN_EXPIRES_IN=7d

# ====================================
# 数据加密配置（已自动生成）
# ====================================
ENCRYPTION_KEY=${ENCRYPTION_KEY}

# ====================================
# CORS配置
# ====================================
ALLOWED_ORIGINS=http://localhost:3000,http://localhost:80

# ====================================
# 日志配置
# ====================================
LOG_LEVEL=info

# ====================================
# 安全配置
# ====================================
COOKIE_SECURE=false
COOKIE_SAME_SITE=strict

SESSION_TIMEOUT=1800
MAX_LOGIN_ATTEMPTS=5
LOCK_DURATION=15

# ====================================
# 备份配置
# ====================================
BACKUP_DIR=backups
BACKUP_RETENTION_DAYS=7

# ====================================
# 初始管理员配置（首次启动时使用）
# ====================================
INITIAL_ADMIN_USERNAME=admin
INITIAL_ADMIN_EMAIL=admin@example.com
INITIAL_ADMIN_PASSWORD=ChangeMe123!

# ⚠️ 重要提示：
# 1. 本配置已包含自动生成的安全密钥，可直接使用
# 2. 生产环境部署前建议修改初始管理员密码
# 3. 如需更高安全性，可重新生成密钥
`;

// 前端.env内容
const frontendEnv = `# ====================================
# 2FA Manager - 前端环境变量配置
# 生成时间: ${new Date().toISOString()}
# ====================================

# 后端API地址
VITE_API_BASE_URL=http://localhost:5000

# 应用配置
VITE_APP_NAME=2FA管理系统
VITE_APP_VERSION=1.0.0
VITE_APP_DESCRIPTION=安全的多用户2FA令牌管理系统

# UI配置
VITE_DEBUG_MODE=false
VITE_DEFAULT_THEME=auto
VITE_DEFAULT_LANGUAGE=zh-CN

# 会话配置
VITE_SESSION_TIMEOUT=30
VITE_TOKEN_REFRESH_INTERVAL=10

# 功能开关
VITE_ENABLE_EXPORT=true
VITE_ENABLE_IMPORT=true
`;

// 创建后端.env
const backendEnvPath = path.join(__dirname, 'backend', '.env');
try {
  fs.writeFileSync(backendEnvPath, backendEnv);
  console.log('✅ 已创建 backend/.env');
  
  // Unix系统设置文件权限
  if (process.platform !== 'win32') {
    try {
      fs.chmodSync(backendEnvPath, 0o600);
      console.log('   已设置文件权限为 600');
    } catch (e) {}
  }
} catch (error) {
  console.error('❌ 创建 backend/.env 失败:', error.message);
}

// 创建前端.env
const frontendEnvPath = path.join(__dirname, 'frontend', '.env');
try {
  fs.writeFileSync(frontendEnvPath, frontendEnv);
  console.log('✅ 已创建 frontend/.env');
} catch (error) {
  console.error('❌ 创建 frontend/.env 失败:', error.message);
}

console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
console.log('✨ 配置文件创建完成！');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');

console.log('🔑 生成的安全密钥信息：');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
console.log('JWT_SECRET:');
console.log(JWT_SECRET);
console.log('\nREFRESH_TOKEN_SECRET:');
console.log(REFRESH_TOKEN_SECRET);
console.log('\nENCRYPTION_KEY:');
console.log(ENCRYPTION_KEY);
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');

console.log('📋 对外端口信息：');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
console.log('开发环境：');
console.log('  前端: http://localhost:3000');
console.log('  后端: http://localhost:5000');
console.log('\nDocker部署：');
console.log('  前端: http://localhost:3000 (映射到容器80端口)');
console.log('  后端: http://localhost:5000');
console.log('\n生产环境建议：');
console.log('  使用Nginx反向代理，统一使用80/443端口');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');

console.log('🚀 下一步操作：');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
console.log('1. 初始化数据库:');
console.log('   cd backend && npm run migrate\n');
console.log('2. 创建管理员:');
console.log('   npm run create-admin\n');
console.log('3. 启动开发服务器:');
console.log('   npm run dev\n');
console.log('或使用Docker部署:');
console.log('   docker compose up -d');
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');

console.log('⚠️  默认管理员账户：');
console.log('   用户名: admin');
console.log('   密码: ChangeMe123!');
console.log('   ⚠️  请登录后立即修改密码！\n');

console.log('✅ 配置完成，可以直接部署使用！\n');

